package com.xxx.springboot.handler;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;

/**
 * 全局统一异常处理
 */
@ControllerAdvice
public class GlobalDefaultExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) {
        e.printStackTrace();
        System.out.println("GlobalDefaultExceptionHandler.defaultErrorHandler()");
        ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView());
        modelAndView.addObject("code", 500);
        modelAndView.addObject("msg", "server exception");
        return modelAndView;

        /*
         * 返回 json 数据或者 String 数据：
         * 那么需要在方法上加上注解：@ResponseBody
         * 添加 return 即可。
         */

        /*
         * 返回视图：
         * 定义一个 ModelAndView 即可，
         * 然后 return;
         * 定义视图文件(比如：error.html,error.ftl,error.jsp);
         */

    }
}
